"""8.10 类的特殊方法和属性
一、特殊的方法：
    1）__init__()方法：
        定义：
            __init__()方法是一个特殊的方法，用于初始化对象的属性。
            __init__()方法是一个特殊的方法，用于初始化对象的属性。
            __init__()方法是一个特殊的方法，用于初始化对象的属性。
        语法：
    2）__str__()方法：
        定义：
            __str__()方法是一个特殊的方法，用于返回对象的字符串表示。
            __str__()方法是一个特殊的方法，用于返回对象的字符串表示。
    3）__len__()方法：
        定义：
            __len__()方法是一个特殊的方法，用于返回对象的长度。
            __len__()方法是一个特殊的方法，用于返回对象的长度。

二、特殊的属性：
    1）__dict__属性：
        定义：
            __dict__属性是一个特殊的属性，用于返回对象的属性字典。
            __dict__属性是一个特殊的属性，用于返回对象的属性字典。
            __dict__属性是一个特殊的属性，用于返回对象的属性字典。
        语法：
            对象.__dict__
        2）__class__属性：


"""

'''一、特殊的方法：'''
#1）__init__()方法：
#2）__str__()方法：
class PersonInfo:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __str__(self):
        return f"姓名：{self.name},年龄：{self.age}"
person=PersonInfo("张三",18)
print("str方法演示：",person)
#3）__len__()方法：
class MyList:
    def __init__(self,items):
        self.items=items
    def __len__(self):
        return len(self.items)

my_list=MyList([1,2,3,4,5])
print("len方法演示：",len(my_list))
'''二、特殊的属性：'''
#1）__dict__属性：
class PersonInfo:
    def __init__(self,name,age):
        self.name=name
        self.age=age

person=PersonInfo("张三",18)
print("dict方法演示：",person.__dict__)
#2）__class__属性：
class PersonInfo:
    def __init__(self,name,age):
        self.name=name
        self.age=age
person=PersonInfo("张三",18)
print("class方法演示：",person.__class__)
print(person)